{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "EM.ipynb",
      "version": "0.3.2",
      "provenance": [],
      "collapsed_sections": []
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.6.2"
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9goLeU8ewzry",
        "colab_type": "text"
      },
      "source": [
        "# 第9章 EM算法及其推广"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lNMPH5Sxwzrz",
        "colab_type": "text"
      },
      "source": [
        "# Expectation Maximization algorithm\n",
        "\n",
        "### Maximum likehood function\n",
        "\n",
        "[likehood & maximum likehood](http://fangs.in/post/thinkstats/likelihood/)\n",
        "\n",
        "> 在统计学中，似然函数（likelihood function，通常简写为likelihood，似然）是一个非常重要的内容，在非正式场合似然和概率（Probability）几乎是一对同义词，但是在统计学中似然和概率却是两个不同的概念。概率是在特定环境下某件事情发生的可能性，也就是结果没有产生之前依据环境所对应的参数来预测某件事情发生的可能性，比如抛硬币，抛之前我们不知道最后是哪一面朝上，但是根据硬币的性质我们可以推测任何一面朝上的可能性均为50%，这个概率只有在抛硬币之前才是有意义的，抛完硬币后的结果便是确定的；而似然刚好相反，是在确定的结果下去推测产生这个结果的可能环境（参数），还是抛硬币的例子，假设我们随机抛掷一枚硬币1,000次，结果500次人头朝上，500次数字朝上（实际情况一般不会这么理想，这里只是举个例子），我们很容易判断这是一枚标准的硬币，两面朝上的概率均为50%，这个过程就是我们运用出现的结果来判断这个事情本身的性质（参数），也就是似然。"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "c3kPBundwzr1",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np\n",
        "import math\n",
        "from sklearn.datasets import load_iris\n",
        "import matplotlib as mpl\n",
        "from sklearn.metrics import accuracy_score\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn.preprocessing import Normalizer"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bQ_XVWIUzENh",
        "colab_type": "text"
      },
      "source": [
        "### 例9.1"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FQ2DERB3wzr0",
        "colab_type": "text"
      },
      "source": [
        "$$P(Y|\\theta) = \\prod[\\pi p^{y_i}(1-p)^{1-y_i}+(1-\\pi) q^{y_i}(1-q)^{1-y_i}]$$\n",
        "\n",
        "### E step:\n",
        "\n",
        "$$\\mu^{i+1}=\\frac{\\pi (p^i)^{y_i}(1-(p^i))^{1-y_i}}{\\pi (p^i)^{y_i}(1-(p^i))^{1-y_i}+(1-\\pi) (q^i)^{y_i}(1-(q^i))^{1-y_i}}$$"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "CB2q29w8wzr6",
        "colab_type": "text"
      },
      "source": [
        "### M step:\n",
        "\n",
        "$$\\pi^{i+1}=\\frac{1}{n}\\sum_{j=1}^n\\mu^{i+1}_j$$\n",
        "\n",
        "$$p^{i+1}=\\frac{\\sum_{j=1}^n\\mu^{i+1}_jy_i}{\\sum_{j=1}^n\\mu^{i+1}_j}$$\n",
        "\n",
        "$$q^{i+1}=\\frac{\\sum_{j=1}^n(1-\\mu^{i+1}_jy_i)}{\\sum_{j=1}^n(1-\\mu^{i+1}_j)}$$"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fmekpcv0zrjP",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class EM:\n",
        "    def __init__(self, prob):\n",
        "        self.pro_A, self.pro_B, self.pro_C = prob\n",
        "        \n",
        "    # E step\n",
        "    def _pmf(self, i):\n",
        "        pro_1 = self.pro_A * math.pow(self.pro_B, data[i]) * math.pow((1-self.pro_B), 1-data[i])\n",
        "        pro_2 = (1 - self.pro_A) * math.pow(self.pro_C, data[i]) * math.pow((1-self.pro_C), 1-data[i])\n",
        "        return pro_1 / (pro_1 + pro_2)\n",
        "    \n",
        "    # M step\n",
        "    def fit(self, X):\n",
        "        N = len(X)\n",
        "        for d in range(N):\n",
        "            pmf = [self._pmf(k) for k in range(N)]\n",
        "            pro_A = 1/ N * sum(pmf)\n",
        "            pro_B = sum([pmf[k]*X[k] for k in range(N)]) / sum([pmf[k] for k in range(N)])\n",
        "            pro_C = sum([(1-pmf[k])*X[k] for k in range(N)]) / sum([(1-pmf[k]) for k in range(N)])\n",
        "            print('{}/{}  pro_a:{:.3f}, pro_b:{:.3f}, pro_c:{:.3f}'.format(d+1, N, pro_A, pro_B, pro_C))\n",
        "            self.pro_A = pro_A\n",
        "            self.pro_B = pro_B\n",
        "            self.pro_C = pro_C\n",
        "            \n",
        "        return self"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bZAJCd4Hwzr9",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "data=[1,1,0,1,0,0,1,0,1,1]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gK74hZPYwzr_",
        "colab_type": "code",
        "outputId": "df7dc5bd-1212-4a16-c5c1-fd81abbde98a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 215
        }
      },
      "source": [
        "em = EM(prob=[0.5, 0.5, 0.5])\n",
        "em.fit(data)"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "1/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "2/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "3/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "4/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "5/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "6/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "7/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "8/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "9/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n",
            "10/10  pro_a:0.500, pro_b:0.600, pro_c:0.600\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<__main__.EM at 0x7f5c1938f400>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eTHQ44DP1rm0",
        "colab_type": "text"
      },
      "source": [
        "##### 9.1"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xzUlweJFwzsM",
        "colab_type": "code",
        "outputId": "2b343bbd-440b-4ad2-923e-3fe3e4fdd2f8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 215
        }
      },
      "source": [
        "em = EM(prob=[0.46, 0.55, 0.67])\n",
        "em.fit(data)"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "1/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "2/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "3/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "4/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "5/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "6/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "7/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "8/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "9/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n",
            "10/10  pro_a:0.462, pro_b:0.535, pro_c:0.656\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<__main__.EM at 0x7f5c1938f208>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Oewoj4r315fN",
        "colab_type": "text"
      },
      "source": [
        "##### 高斯混合模型 GMM"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_OrYQBcP104s",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "class GMM:\n",
        "    def __init__(self, K, weights=None,means=None,covars=None, sigma=0.0000001):\n",
        "        \"\"\"\n",
        "        :K: component\n",
        "        :weigths: init weights\n",
        "        :means: Gaussain mean\n",
        "        :covars: Gaussain covars\n",
        "        \"\"\"\n",
        "        self.K = K\n",
        "        if weights is not None:\n",
        "            self.weights = weights\n",
        "        else:\n",
        "            self.weights = np.random.rand(self.K)\n",
        "            self.weights /= np.sum(self.K) # normlize, to make sure sum = 1\n",
        "        \n",
        "        self.means = means\n",
        "        self.covars = covars\n",
        "        self.sigma = sigma\n",
        "\n",
        "    def _init_param(self, X):\n",
        "        col = X.shape[1]\n",
        "        if self.means is None:\n",
        "            self.means = []\n",
        "            for k in range(self.K):\n",
        "                mean = np.random.rand(col)\n",
        "                self.means.append(mean)\n",
        "                \n",
        "        if self.covars is None:\n",
        "            self.covars = []\n",
        "            for k in range(self.K):\n",
        "                cov = np.random.rand(col, col)\n",
        "                self.covars.append(cov) \n",
        "                \n",
        "    def Gaussian(self, x, mean, cov):\n",
        "        dim = np.shape(cov)[0]\n",
        "        # cov的行列式为零时的措施\n",
        "        covdet = np.linalg.det(cov + np.eye(dim) * 0.01)  #协方差矩阵的行列式\n",
        "        covinv = np.linalg.inv(cov + np.eye(dim) * 0.01)  #协方差矩阵的逆\n",
        "        xdiff = (x - mean).reshape((1,dim))\n",
        "        # 概率密度\n",
        "        prob = 1.0/(np.power(np.power(2*np.pi,dim)*np.abs(covdet),0.5))* np.exp(-0.5*xdiff.dot(covinv).dot(xdiff.T))[0][0]\n",
        "        return prob\n",
        "\n",
        "            \n",
        "    def fit(self, X):\n",
        "        self._init_param(X)\n",
        "        \n",
        "        loglikelyhood = 0.\n",
        "        oldloglikelyhood = 1.\n",
        "        length,dim = np.shape(X) \n",
        "        # gamma表示第n个样本属于第k个混合高斯的概率\n",
        "        gammas = [np.zeros(self.K) for i in range(length)]\n",
        "        while np.abs(loglikelyhood-oldloglikelyhood) > self.sigma:\n",
        "            oldloglikelyhood = loglikelyhood\n",
        "            # E-step\n",
        "            for n in range(length):\n",
        "                # respons是GMM的EM算法中的权重w，即后验概率\n",
        "                respons = [self.weights[k] * self.Gaussian(X[n], self.means[k], self.covars[k])\n",
        "                                                    for k in range(self.K)]\n",
        "                sum_respons = np.sum(respons)\n",
        "                gammas[n] = respons/sum_respons\n",
        "            # M-step\n",
        "            for k in range(self.K):\n",
        "                #nk表示N个样本中有多少属于第k个高斯\n",
        "                nk = np.sum([gammas[n][k] for n in range(length)])\n",
        "                # 更新每个高斯分布的概率\n",
        "                self.weights[k] = 1.0 * nk / length\n",
        "                # 更新高斯分布的均值\n",
        "                self.means[k] = (1.0/nk) * np.sum([gammas[n][k] * X[n] for n in range(length)], axis=0)\n",
        "                xdiffs = X - self.means[k]\n",
        "                # 更新高斯分布的协方差矩阵\n",
        "                self.covars[k] = (1.0/nk)*np.sum([gammas[n][k]*xdiffs[n].reshape((dim,1)).dot(xdiffs[n].reshape((1,dim))) for n in range(length)],axis=0)\n",
        "            loglikelyhood = []\n",
        "            for n in range(length):\n",
        "                tmp = [np.sum(self.weights[k]*self.Gaussian(X[n],self.means[k],self.covars[k])) for k in range(self.K)]\n",
        "                tmp = np.log(np.array(tmp))\n",
        "                loglikelyhood.append(list(tmp))\n",
        "            loglikelyhood = np.sum(loglikelyhood)\n",
        "        \n",
        "        for i in range(length):\n",
        "            gammas[i] = gammas[i]/np.sum(gammas[i])\n",
        "        self.posibility = gammas\n",
        "        self.prediction = [np.argmax(gammas[i]) for i in range(length)]\n",
        "        \n",
        "        return self.weights, self.means, self.covars\n",
        "    \n",
        "#https://blog.csdn.net/qq_30091945/article/details/81134598"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dKI4zQzcWvir",
        "colab_type": "text"
      },
      "source": [
        "##### 题9.3"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WBlqxwGJ9Nj8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "data = np.array([-67, -48, 6, 8, 14, 16, 23, 24, 28, 29, 41, 49, 56, 60, 75]).reshape(-1,1)\n",
        "data = Normalizer().fit_transform(data)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "g2Www0HJ9hHL",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 71
        },
        "outputId": "92ab6596-64d0-46fe-bf40-440977e70f8a"
      },
      "source": [
        "gmm = GMM(K=2)\n",
        "gmm.fit(data)"
      ],
      "execution_count": 130,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(array([0.86666667, 0.13333333]),\n",
              " [array([1.]), array([-1.])],\n",
              " [array([[5.53558611e-87]]), array([[5.53558611e-87]])])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 130
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FAzKJKu6W2C7",
        "colab_type": "text"
      },
      "source": [
        "##### test"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "19XKdlFhAPnA",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 125
        },
        "outputId": "1008307f-c3f2-4073-a937-9fe9a7495d72"
      },
      "source": [
        "# 导入Iris数据集\n",
        "iris = load_iris()\n",
        "label = np.array(iris.target)\n",
        "data = np.array(iris.data)\n",
        "print(\"Iris label：\\n\",label)"
      ],
      "execution_count": 112,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Iris label：\n",
            " [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
            " 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n",
            " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2\n",
            " 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n",
            " 2 2]\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ghZH6RnpUUP1",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 281
        },
        "outputId": "57242957-ccc8-448b-bdf4-9e77e2899b96"
      },
      "source": [
        "# 对数据进行预处理\n",
        "data = Normalizer().fit_transform(data)\n",
        "\n",
        "# 数据可视化\n",
        "plt.scatter(data[:,0],data[:,1],c = label)\n",
        "plt.title(\"Iris\")\n",
        "plt.show()\n"
      ],
      "execution_count": 124,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEICAYAAACzliQjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd81PX9wPHX+2Y2hCRsBBSQJags\n90ZxQRX3rlqc1bbWqm0d1fpT26rVOnG3ioC4UFAUZQiKEJC9N2GGJISM2/f5/XFHyOXukks4CJD3\n8/HgYe7zHfe5gO/7fD/j/RFjDEoppZoGS2NXQCml1IGjQV8ppZoQDfpKKdWEaNBXSqkmRIO+Uko1\nIRr0lVKqCdGgr1SCRORaEfmmseuh1L4Qnaev1F4ish641RgzubHrotT+oC19pRIgIrbGroNSyaBB\nX6kYROQmEZkpIs+LSBHwWLhsRvi4hI/tEJHdIrJIRHo3crWVqpO2XpSKbxAwGmgF2IErqx07FzgN\n6AaUAt2BXQe6gkrVl7b0lYpvizHmP8YYvzHGVeOYD8gkFOzFGLPMGLP1wFdRqfrRoK9UfJviHTDG\nfA+8BLwM7BCRkSKSdcBqplQDadBXKr5ap7YZY140xvQDehLq5rn/gNRKqX2gffpKNYCIDCDUaJoH\nVABuINiolVIqAdrSV6phsoA3gBJgA1AE/LNRa6RUAnRxllJKNSHa0ldKqSZEg75SSjUhGvSVUqoJ\n0aCvlFJNyEE3ZTM3N9d06tSpsauhlFKHlLlz5+40xuTVdd5BF/Q7depEfn5+Y1dDKaUOKSKyIZHz\ntHtHKaWaEA36SinVhGjQV0qpJkSDvlJKNSEa9JVSqgnRoK+UUk2IBn2llGpCNOgrpVQTokFfKaWa\nEA36SinVhGjQV0qpJuSgy72jVFO1Zc02lv60khZtsul7Rk+sVmtjV0kdhjToK9XIgsEgz494ne9H\n/YDVZgWBzOwMnp36N1p3atnY1VOHGe3eUSrJ5k9ZzOOXP8sfz36Mz1/5Go/LU+v53/53GlPHzMTr\n9uEqd+Mqc7OzoIjHLtV91lXyaUtfqSQa84/P+N/j4/BUhgL98p9XM/GNybz445M4U50xr/n85a9x\nV0R+MQSDhk0rtrB9QyGtOtaZIl2phGlLX6kk2V1Uxn8fG1sV8AE8lR62rNrG5P9Nj3tdzYC/h8Vq\nwV3hTno9VdOWUNAXkSEiskJEVovIg3HOuUJElorIEhEZVa38RhFZFf5zY7IqrtTBZulPK7E5oh+e\n3ZUeZn4+J+Y1OzbtpNURuVht0f8rpqY76dC9XdLrqZq2Ort3RMQKvAwMBgqAOSIy3hiztNo5XYGH\ngJONMSUi0jJc3gJ4FOgPGGBu+NqS5H8UpRpXRnY6xpiocrEI2S2bRZVPfHMyL9/zNsGgIeAPVpXb\nHDasNit/fPtOtm8opHleFqkZqfu17qrpSKRPfyCw2hizFkBERgPDgKXVzvkN8PKeYG6M2REuPw/4\n1hhTHL72W2AI8GFyqq/UwaPnid3IzM7AXe6JCP6OFDsX33FuxLk7txTz8j1v43X7IsrFKgy+/jTy\nOuTyf9e8QMAfIBgIcs71p3P3f27G7rAfkM+iDl+JdO+0AzZVe10QLquuG9BNRGaKyCwRGVKPaxGR\nESKSLyL5hYWFiddeqYOIxWLhmW8eplWnPFIyUkjLSsWZ6uCO52+i+8CuEef+9PkcRCT6HiJUlrkY\n84/PqSitxF3hwev28d3703nld+8eoE+iDmfJmr1jA7oCZwDtgekickyiFxtjRgIjAfr37x/9fKzU\nIaJ9t7b8d/VLrMxfQ8VuFz0GdYnZNWNMqL8zVvnC6csiBoMBPC4v37w7hdufvSHuLCClEpFIS38z\n0KHa6/bhsuoKgPHGGJ8xZh2wktCXQCLXKnVYERGOHtCF488+Jm5f/IlD+4cifA12hw2fxxfjCkCE\nspKKZFZVNUGJBP05QFcR6SwiDuAqYHyNcz4j1MpHRHIJdfesBSYB54pItohkA+eGy5Rq0vLa53Db\nszfiSLFXDdw6Uh1c+cCv6HVyd2L0/JCS5iC7VfSAsFL1UWf3jjHGLyJ3EwrWVuBtY8wSEXkcyDfG\njGdvcF8KBID7jTFFACLyBKEvDoDH9wzqKtXUDb3jPAYMOZYfxs0i4A9y8iUDOaJ7O9Yt2sCCKYvx\nVHqrBoSdaQ5G/PMGzcej9pnEmmLWmPr372/y8/MbuxpKNap1izfy3iNjWDprJZnZ6Qy+4XQuv29o\nKDePUjGIyFxjTP+6ztMVuUodZDYsK2DxD8to26UVrjIXOzcX8+FTn3JFm1tZ8uOKxq6eOsRp7h2l\nDhLGGJ699VWmjp6JMSZqDj/Any94ktEFr1cNEG9Zs41NK7ZwRPd2tDmy1YGusjoEadBX6iAxZfRM\npo39EY/LG/ccr8vLzE9nc9rlJ/LEFc8xb/JC7E47Po+P/ucdy19G/x6HUxdwqfg06Ct1kJgw8tu4\nydf28PsCTH5/OivmrmXe5EV43b6qJ4L8bxbw7sMfMuIfN8S81lXh5pv3pjLry7nktslm2N3n0+W4\nzkn/HOrgpkFfqf0g4A8w68u5zP12AS1aZ3PuTWfQskNurdf4PP6E7r1oxjKW/LgCrzvyicDr8vLl\na9/GDPqVZS7uGvgghZt24qn0YrEIU0bP5Hcjb+Oca09L/IOpQ54GfaWSzOvxcf9Zj7Fu0UZc5W7s\nThujn/mMR8fdx4Ahx8W97uzrTmXtwvV4KuN37wD4vH4Ixj7mKnfz84S5DLqwH1vWbOOrt76nZFsJ\nXrePHRsKq54KgkGDx+XlxTvf4LThJ+BIcTT486pDi87eUSrJJr4xmTUL1uMqD+XC93n8eCo9PHXd\niwT8gbjXnX/L2XQ9/khSM1IAYi7QAshrl0OPE7vFvc8zN77EjM9mM6LvfYx7djyT3p3K1LE/xhwY\nFhFWz1+f+IdThzwN+kol2Xcf/BCzte73BVg1b23c6xxOO/+a8hgPvn8Pw+46jwtGnIMjxRER/J1p\nDm58/MpaB2vLd1Xwjxv/g6fSi98X+pIxwdjrcQL+IOnN0hL8ZOpwoN07SiWZIyV2QDYmiL2OmTVW\nq5WThg7gpKEDALhoxLm899hYVs9bS/tubbn6L5fwnzvfZMua7XHvYYImbvdPdRaL0KZzSzr2aF/3\nyeqwoUFfqSS7cMRgVuaviZqJk5WTxZF9OtbrXl2O68wTnz9Q9XrOpPkUbS0hGIgf1Z1pDkzMHJ6h\nDV1SM1IwQUN26+Y88UXMjfDUYUyDvlJJduZVJzNv8kKmjJ6JABabFbvDxhOfPxAzh359bF65lYAv\n/riAWITfvXob7z46GndF5N4UKelO7nrxFprlZtIsL4seg7pG1GfHxkJeuudt5nw9H6vNQruubXCX\nu0nLSmPYXUM496YzsFhi9wh7XB6mjP6RxT8spW2XNgy5+UxatM7ep8+q9g/NvaPUfrJx+WYWTltK\ns7wsBl14fFIWTS2YuoSHhz5dNUhcndVm5fjBx/Cbp69DLBbuP+sxvB4fwUCQYCDI+beczV0v3hz1\nxVOyfRcT35zMh099itfljZXxmZR0J6dfcRJ/fOvOqGNlJeXcPfBBirftwl3hwZFix2qz8sy3j9Bj\nUNfom6n9ItHcOxr0lTqEGGO4c8ADbFiyKea8fovVgt1hY8S/buCCW89m7jcLKN1ZxjGn9oiZpmH+\nlMU8fPHT+Lz+WmcWQWis4o1Fz9H2qNYR5a/+4V2+eGVSaCppNe26tuGd5S/s89ONSkyiQV+7d5Q6\nhIgI//r+Md584H2+/3AGPo+PQCBIMLyxejAQxOPy8vp973HGFScx6MJ+UfcIBAJ8P2oGk96ZwpKZ\ny6tm+NTFarey/OdVUUF/+rifogI+wI5NOynaWkJu2xYN+KRqf9Epm0odYtKz0rj31RF8vuu/nH7F\nSVUBvzqv28etvX/PjE9/jig3xvD4Zc/y4p1vsGDqkoQDPhA3J1C8hV0maDQP0EEooaAvIkNEZIWI\nrBaRqOF+EblJRApFZH74z63VjgWqldfccUspRSgY//j5HP507uPcNfBBxv7zc1zlrjqvc6Y6EUvs\n7pOS7aU8ff2LzPpyblXZ4hnLmTd5YZ05fmIJ+oM8dd2LLJy+JKL8whGDcaZGBn6L1UL3QV3Jysms\n9/uo/avOoC8iVuBl4HygJ3C1iPSMceoYY8yx4T9vVit3VSsfmpxqK3V4efvPo3jquhf4ZfIiVuav\n4b3HxvLbE/+Cx1V7cB5y85lx1wUAeCq9vPXnUVWv54d35KpLvC8SgPvOeIw3H3y/agzg0nsv4PjB\nfXCmOXCmOUnNTKHlEbn8+YN763wfdeAl0qc/EFhtjFkLICKjgWHA0v1ZMaWaiqKtJXzywoSINAle\nl5ft63fw/agZnH/L2XGv7T6wK9c9fBnvPToWf4x+dYCta7ZV/ZyVk4kjxR6zq8Zqs2JzWOk3uA+/\nTFmMa3f0DKE9PnlxIhWlldz76ghsdhuPf/YAaxduYGX+GvI65HDc2cfEnd6pGlcifyvtgE3VXheE\ny2oaLiILRWSciHSoVp4iIvkiMktEfrUvlVXqcLRk5nJsjuj2l7vCw6wJc2NcEemqBy7hv2teqsrZ\nU1P1WTtnXHlSzFa8zWHjukcu498z/k7hpqJaAz6Az+1j0rtTqCitqCo7sk9Hhtx8Fv0G99WAfxBL\n1t/MF0AnY0wf4FvgvWrHOoanEV0D/FtEjqp5sYiMCH8x5BcWFtY8rNRhrXnLZsSaOm2xWhKe+ZLX\nLodbnroGZ5ozotyZ5uDXT15d9bpZbha3PHUtdqcdq91ateeuxSKMeeYzpoyeyapf1iX0nj6Pn89e\n+jqhc9XBI5Ggvxmo3nJvHy6rYowpMsbs6Xx8E+hX7djm8H/XAlOBqNyyxpiRxpj+xpj+eXl59foA\nSh3qep/SnczsjKgWuN1p4+I7zkv4PkPvHMIdz99IizbZIKEW/gPv/bYqjw/AWw99wJsPvh+a6ukL\nVPXLe90+3BUePvn3l8TJ4BDTB3//mNXzE/uSUAeHOhdniYgNWAmcTSjYzwGuMcYsqXZOG2PM1vDP\nlwAPGGNOEJFsoNIY4xGRXOAnYJgxJu54gC7OUk3RljXb+OtFT1G4qQiLLdQW+8PI2zn9ipMadD9j\nTNSiqIKVW7jtuPvx1rIdY0OkN0vj2al/46i+nZJ6X1U/SVucZYzxi8jdwCTACrxtjFkiIo8D+caY\n8cA9IjIU8APFwE3hy3sAr4tIkNBTxdO1BXylmqq2R7XmraX/ZuOyAip2u+h6fGfsjobPcY+1Cvbn\nCfMwwQTSb9ZTRWkl953xKG8t/TdjnvmMb/83Db/XzwkX9eO2Z2/UxVkHGU3DoFQT8eXr3/Lafe/h\nqazfHH2LzULvk7uzeMbyuNk9nWkOWrTOZufmYnye0Cwki9VC85bNePB/v+Xrt7+neOsuTri4Hxfc\nejapGan7/HlUJM29o5SKULpzN9d2vCPuytpYxCK8Pv9fdO59BMNb3szunWVxz7XZrVErfG0OG8YY\ngv4gxhicqQ5y2+fwSv4zpGVq4E+mRIO+zqtSqololpvFn0f9Dmeag9TMVFIzU7A5bLQ/ui32GAu8\nLFYLJ1zUj869j6i6Ph6bwxZzKqjf6yfgC1TNTvK4vBQWFPHFq5OS9KlUfWnCNaWakJOGDWDs1jeZ\n89UvBIOG/uf1JTM7g+JtJdw96CHKSypwlbtJzUghvVka97wcyqiyu6iMrWu3xbynhGcK7Swoipn5\nsyavy8uMT2dz5Z9iL9uZ9tFPvPvIaHZs2En7bm349d+vov95x2Kza7hKBv0tKtXEpGWmRs0KatE6\nm3dX/ocZH89i/ZJNdOzZgVOHD6pKprZw+lIcKQ783uh8QO26teHlOU/x2xP+zOaVW6u6eEQk5voD\ngGa5sXPyfPu/abxwx8iqVBFrF27g4aHPYLEI/Qb35fdv3E5e+5wGf3al3TtKqTCH085Z15zKzU9e\nw9nXnhqRPTMtK/bm6WIRep/UndT0VJ6b+jgnDhuA1W7FYhF6n9Kdtke1wlKj28eZ5uSSey6Iupcx\nhjcf/CBmbqBg0DB38kLuOekv+Ly+qOMqcdrSV0rVqe/pPbHZrVHlJmj4/sMZYBFu/9cNPDL2PgKB\nACZosNltbN9QyIND/s7OgiIsVit+r4/rH7mMfoP7Rt3L5/Gxa/uuuHUIBoJUlFbw42dzGrx+QWnQ\nV0olYMfGnXFz73vdPib/bzqrf1nHK3OewWq1hlb0AK065vH20n+zat5aSneW0X1gFzKzM2Lex+60\nk5Gdzu6i8rj18FR4KFi1dZ8/T1OmQV8pVafX7nsv5r68e/i9fgpWbmXRD8voc1pk5nURoVu/oyja\nWswLd4xk6U8ryWmTzY1/u5L+5x3L5tVbGf3UpyyfvZrcdjm4KzwRGUerc6Y7ObJPx6R+tqZGg75S\nqk7zvluECda+pscEgmxYsikq6AOsmreGuwf9uWpxV+GmIh664EmG/PpMpo39CY/LW3XMarOQkuHE\nXR65iMzmsJHbLoeBF0Sl71L1oAO5Sqk6pdTI3hmLxWqhQ/dYWdfhzxc8Fb2a18DXb0/BVe6OOBbw\nB8HAOyteYMjNZ5GWlUp6szQG33A6L8z8e6j7SDWYtvSVUnW66LbBfPSv8XFX89ocNlp3bknfM3pF\nHVu3eCO7dpTW6/3cFR7efOgDHht3P/e9eUeD6qxi05a+UqpO1/51OAMvPB5Hip20rFQcKaFBV4vV\ngs1h4/TLT+TZqX+Lmeht2tgfG/SeP385j91F8dM+qIbRlr5Sqk42u41Hxt7HljXbWLdoI+26tqFT\nrw5Vi69iBfs9dhfHn41TG7vTRsn2XWRkpzN/yhLWL95Ih6PbcvzgPtrFsw806CulEtb2qNa0Pap1\n1evagv0e/c7pw7fvTsUdI7un1W4lEGcqqDGQlZPBHf3+xNY12/H7/NgcNnLaZPP8D0/QPK9Zwz9I\nE6bdO0qp/eqEi/pxZN+OOFL3rvC1Oaycc8PpDL7+9JjJ3uxOGzc+dgXvPDyGTcs24yp34/P4cZW5\n2bpuBy/e+caB/AiHFW3pK6X2K6vNyj+/f4wJI7/l+w9+wO60c+GIwZx59cn4w1s2Thk9ExMMEggE\nyW2Xw53P38Spw09gaLPr8Xkjk7gFfAF+/DyfYDCoG7A3QEL59EVkCPACoXV2bxpjnq5x/Cbgn+zd\nO/clY8yb4WM3An8Nl//dGFN90/Qomk9fqaanfFcFJdt30apTSxzOvS3/i9KvjTljyGK1MNE9Svv2\nq0laPn0RsQIvA+cDPYGrRSR69QWMMcYcG/6zJ+C3AB4FBgEDgUfD++YqpVSVjObpdDi6XUTABzjh\n4v5YbZFhymIRjj/7GA34DZTIs9FAYLUxZq0xxguMBoYleP/zgG+NMcXGmBLgW2BIw6qqlGoqjDFM\nemcKq+atJRg0WKyhUJWS7iQrN4t7Xv1NI9fw0JVIn347YFO11wWEWu41DReR04CVwO+NMZviXBt7\nyZ5SSoW999gYxj37ZdV+vkYMNoeNa/8ynGG/PZ/U9JRGruGhK1mjIF8AnYwxfQi15mvtt69JREaI\nSL6I5BcWFiapSkqpQ1FlmYuP/vlF5AbuBkwwyJa12zXg76NEgv5moEO11+3ZO2ALgDGmyBiz52/o\nTaBfoteGrx9pjOlvjOmfl5eXaN2VUoehTSu2YHNE99cH/EGW/riiEWp0eEkk6M8BuopIZxFxAFcB\n46ufICJtqr0cCiwL/zwJOFdEssMDuOeGy5RSKqa89i2ipmlCaC/edl3bxLhC1UedQd8Y4wfuJhSs\nlwFjjTFLRORxERkaPu0eEVkiIguAe4CbwtcWA08Q+uKYAzweLlNKqZhatM5m0AWhPD/VOVIdXPlA\n7M3UVeISmqd/IOk8faWUx+XhhTveYOqYULK2rBYZ/PblWzn5VwMbuWYHr0Tn6WvQV0odtDwuD5W7\nXTRv2SyhPD9NWaJBX9MwKKUOWs5UJ87UujdwUYnTxBVKKdWEaNBXSqkmRIO+Uko1IRr0lVKqCdGg\nr5RSTYgGfaWUakI06CulVBOiQV8ppZoQDfpKKdWEaNBXSqkmRIO+Uko1IRr0lVKqCdGgr5RSTYgG\nfaWUakISCvoiMkREVojIahF5sJbzhouIEZH+4dedRMQlIvPDf15LVsWVUkrVX5359EXECrwMDAYK\ngDkiMt4Ys7TGeZnAvcDPNW6xxhhzbJLqq5RSah8k0tIfCKw2xqw1xniB0cCwGOc9ATwDuJNYP6WU\nUkmUSNBvB2yq9rogXFZFRI4HOhhjJsS4vrOI/CIi00Tk1FhvICIjRCRfRPILCwsTrbtSSql62ueB\nXBGxAM8B98U4vBU4whhzHPAHYJSIZNU8yRgz0hjT3xjTPy8vb1+rpJRSjS7gDxAIBBq7GlESCfqb\ngQ7VXrcPl+2RCfQGporIeuAEYLyI9DfGeIwxRQDGmLnAGqBbMiqulFIHo4KVW7jvzEe5IPUaLky7\nlr9f9Ty7i8sau1pVEtkYfQ7QVUQ6Ewr2VwHX7DlojCkFcve8FpGpwB+NMfkikgcUG2MCInIk0BVY\nm8T6K6XUQaOspJx7TvoL5SUVGGMgADM//ZmNywp4ff6/EJHGrmLdLX1jjB+4G5gELAPGGmOWiMjj\nIjK0jstPAxaKyHxgHHC7MaZ4XyutlFIHo2//Ow2v2xsK+GF+X4Bt63awcPrSWq48cBJp6WOMmQhM\nrFH2SJxzz6j288fAx/tQP6WUOmSsW7wRT6U3qjwYNGxeuZW+p/dqhFpF0hW5SimVJN36HUVKujOq\nXAQ69e4Q44oDT4O+UkolydnXnkpaZioW697Qanfa6dynIz1OODjmsGjQV0qpJEnLTOWl2U9z8iUD\ncaY5SW+WxgW/OZtnvnn4oBjEhQT79JVSSiUmr30Oj4yNtWzp4KAtfaWUakI06CulVBOiQV8ppZoQ\nDfpKKdWEaNBXSqkmRIO+Uko1IRr0lVKqCdGgr5RSTYgGfaWUakJ0Ra7aJy6fjzFLFjFpzSqap6Rw\nfZ/jOKnDEY1dLaVUHBr0VYO5/T4uHTuKDaW7cPv9AEzfsJ57Bp3Ibf0GNnLtlFKxaPeOarBPli1l\nY7WAD+Dy+/n3rB/Z5XY1Ys2UUvEkFPRFZIiIrBCR1SLyYC3nDRcRIyL9q5U9FL5uhYicl4xKq4PD\nN2tX46oW8PewW63M3bqlEWqklKpLnd07ImIFXgYGAwXAHBEZb4xZWuO8TOBe4OdqZT0J7anbC2gL\nTBaRbsaYg2+LeFVvualpWEQIVtsaDsAYQ3ZKaiPVSilVm0Ra+gOB1caYtcYYLzAaGBbjvCeAZwB3\ntbJhwGhjjMcYsw5YHb6fOgxc3+dYnFZrRJkA2SmpHNe6TeNUSilVq0SCfjtgU7XXBeGyKiJyPNDB\nGDOhvteGrx8hIvkikl9YWJhQxVXj69u6DX897UxSbDYyHA7S7HY6ZDXjvUsuO2g2jEi2JTu288iU\nydz79QQmrlqBPxhs7CopVS/7PHtHRCzAc8BNDb2HMWYkMBKgf//+po7T1UHk6t59GNqtOwu2byPT\n6aR3Xst9Cvgev5+vVq9kVsEm2mVmcUWvY2iVkZHEGjfc+wvn838zpuENBAgaw3fr1vDBogW896vL\nsFl0ToQ6NCQS9DcD1Xf0bR8u2yMT6A1MDf/P3hoYLyJDE7hWHQbSHY6kzM0v83gYPnYUW8rLqPT5\ncFitvD53Du/86lIGtG2fhJo2XKnbzZM/TMUT2DscVenzMX/bNr5avZKLu3VvxNoplbhEmidzgK4i\n0llEHIQGZsfvOWiMKTXG5BpjOhljOgGzgKHGmPzweVeJiFNEOgNdgdlJ/xTqsDBy7hw27i6l0ucD\nwBsIUOn38fuvJ2JM4z4Azt5cgL3G+AWAy+9j4qoVjVAjpRqmzpa+McYvIncDkwAr8LYxZomIPA7k\nG2PG13LtEhEZCywF/MBdOnNn/8nfspkPFi2g1OPm/C7dGNqtO07bobP+7stVK/AGov95bC0v46z/\nvs2VvY7h18ce3yifKdVuj1kuQIbDcWAro9Q+SOj/HmPMRGBijbJH4px7Ro3XTwJPNrB+KkFvzsvn\n+Vkzcfv9GODnggJGLVrAmMuuwhGjhXowSokTzA2woXQXL87+ie/WrWHMZVdhOcADxYPatcduif49\npthsXNW7zwGpQ7Grkmd/msmkNatwWK1c1esYbu8/6JD5+1UHBx19OgyUuFw8+9MMXOGAD6Fuh5VF\nRXy5cnmj1q0upW43k9euZlbBJq7sdQyptbTi3X4/y3YWMnPjhgNYwxC71co7wy6luTOFDIeDdLsd\np9XKPQNPpF+bqAlpSefy+Rg2+gPGLV1MscvFtvJyXs2fw2+++HS/v7c6vBw6z/4qrvwtm7FbrRGD\njBAK/F+vXsWlPXqxs7KS8SuWUVhRwQntO3Bqx05xW8ulbjcLd2wjNzWN7rl5+2365bvz5/HMzOnY\nrVaMgVSbjX5t2pG/dTP+YDDmdMhKn49527ZwasdO+6VOtenTqjWzbr2dHzdtpNzr4YT2R5CblnZA\n3nv8yuUUuyrxVfudeAJ+8rdsZvGO7fRu2eqA1EMd+jToHwYynU5ijXNaRGieksLPBZu4efynBE0Q\nTyDA/xbNp0/L1rz7q+FRXQMvz5nFS7NnYbdaCQQNHbKyePdXw2mdkZnUOk9bv45nZk7HEwhUfVlV\n+LysKNrJx5dfzbsLfmH8iuV4ApFpHlJtNlqlR0/hDBqDPxjc710dDquVMzp13q/vEcu8rZtjprwA\nWFK4Q4O+Sph27xwGBrRtR3qMgUaH1cqVvY7h7q++xOX3VQXXSp+PBdu38tGSRRHnT1m/llfmzMYT\nCFDu9eLy+1hTUsxvvvgsaXX1BQLc/+3X3PLFp1FPJnvqVurx8OjpZ5Fiiw7gNouVC7seXfXa4/fz\n+LQpHPPqi/R85QXOe/9dZm8uSFp9Dxadm7eIWv0MoS/29llZjVAjdajSoH8YsFosvHfJZbRMTyfd\nbifD4cBptfHgyafhtNlw+31R17j8fsYtWxJR9s78ebhqnBswhjUlxazbVZKUuj7700wmrFoRla9n\nD5HQfP00u50Ph1/JkdnZpNgb9HWOAAAgAElEQVRsOKxWUm02fMEA5/zvHf4z+yf8wSB/mjyJ0UsW\n4vL7CRrDquIibvr8Y1YU7ay6pzGG+du28vrc2Yxbuphyr3efPoMxJm7995fLevaOmjJqFSE3LZ0T\n2+v+BSpx2r1zAJngbsCKWNKTfu+jc3KZ+esRzN26hTKvhwFt25HlTGFZ4Q7ihaeaq0hLXLHTIdss\nFkrd7pjH6sMYw/uL5kekYq7JFwgwsF1oIVb33DwmX38z87dt5cbPxlHh8xE0Brffz6v5s1myYwfT\nNqyLemLwBgK8lv8zz593IYFgkLsmfsEPGzfgCwZwWK08Pn0K/7vkcvq2al2v+nv8fp6Z+QNjlizC\n7ffRq2UrnjjznHrfpyFy09L48NIruH/yJNYUFwEwqH0H/jV4yAGfyaQObRr0DwDjW44pfQD8q0Kv\nHQOQZv9ArMnth7VaLFUBc4/uuXk0c6ZULXjaI9Vmj5pqOPjILqwuLooKosYYeuTm7XP9Asbg8kU/\ndeyRYrPxxxNPoVlKSkT5d2vX4AmnPtjD7fczZf1aHDEGsIPGsLIoFBg/Wb6UHzZuqHqC2TM4fPuX\nnzPz5hH1Cpi/mzSBqevXV40zLN6xnWs+HsuEa66nU/PshO/TUL1atmLiNTewy+3CZrHq+gDVINq9\ns5+ZYAmm+FrwLyO0Ps0P3tmY4ms4EOvURITXLhpGpsNJut2O3WIh1WbjzM6d+dXRPSLOvenY48hL\nT6+aLy+EBk4fPf2spCyIslksdG2RE/NYTmoq719yOTcf1y/q2C/btsZctOW02mKOC1hF6BNufY9d\nsiiqywqgzOth+c7Ek/ttLtvN1PXrogaWfQE/b/0yN+H7JEPzlFQN+KrBtKW/n5nKz8DUDDoBCBaD\n90dwnrrf63BMy1b8dMttfLNmNUWuSga2a88xMWZ7ZDlTmHD1DXy4eCHfr19L6/QMbjr2eI5NYprk\nv51xNr8e/0lV0jKrCA6rjbeGXloVqGvqmpPD7C0FUVM4/SbIkKO68N26tREzW5w2G9f07sPIuXNY\nHe4KiaU+/fIbdu2K+VThN4alhTsSvo9SjU2D/v4WWEfkFgNhJgCBA5d7Ls1u51fde9R5XqbTyYh+\nAxjRb8B+qceg9h34+PKreSX/Z1YWFdG7ZSvu7D+Qo+I8AQD8+tjjGbtkcUTQd1itHNe6Dc+fdyEj\n5+Xz7vx57Pa4Oa51W27rN4Bfj/+ESq8PdyD2+EGa3U7PvJYJ1/vI7OyYTxV2iyXmF6hSBysN+klk\n/BsxZf8Hnh9BUiDtCrD3BncamMoaZwvY6g7Ch6MeeS35z/kXJ3y+LxDgwVNO4/2F81lbUozVYuHC\nrkfz+BlnY7VYuKP/QO7ov3dvnrsmfsEul5tgjCHsFKsNi0V4+YKL69Wf3zojk/OP6sqktasjBqId\nViu3Ht+/liuVOrho0E8SEyzGFA0HUwYEwbih4j1wDAJLCwh4CfXpAzjB3hfsByZny6FqZ2Ult4z/\nhNXFRdgsFryBAHcNGMRdA06ImfFyj+kb1sUM+ALcd+LJXNqjF9mp9d/O8R+Dh9Bh9k+8v2gBFV4v\nx7dpyyOnn0X7rGb1vlcyVfp8fLlyOet2ldAzryXnHtnlkEq0pw4s/ZeRJKZyVCjQU73f2QPen6HF\nf8H1Gbgngdgh9TIk4/bDdnepZLljwucs21kY0a3zxry59G7ZinOO7BL3OqfNRkWMWUI2i4Ub+h5X\n6xdGbexWK3848RT+cOIpcc8xxhAwJuamKrvcLtx+P63SM5L2d7+xdBfDx47C5fNT6feRbrfz7E8z\n+OSKa2iRemBSRKhDiwb9ZPEtAjzR5WJHgjuQZn+DZn874NVKFuPfhKl4DbzzwNoBybgNcUTPtImn\nzOPhi5XL2Vi6iz6t2jD4yKNqDb6by3azeMf2qMFbl9/HMzN+oKiyklM6dqJdZvRq1Kt6HcNbv8yN\n6IO3Wyycd1TXBgf8Cq+XVcVF5KWnx3xPj9/P0zOnM2bJIjx+P91z83j8zLPp16YdhZUV/H7SRGYX\nFCASmnP//HkXRk2vbYgHJ0+ixO2uGpSu8PnwlpXx9Izp/GPwkH2+vzr8SGNvTlFT//79TX5+fmNX\no96CZc9CxdtAzRZmKpIzBrEfujsrGf+6cNeVC9gTSFOg2T+wpA4Jn7MaAtvB3hOxRM5ZX11cxOUf\nfYg3EMDl95Nmt9M2I5NxV1xNljNyTv4eywp3cMW4MVT4Yq+eTbXZCBrDHf0Hcs+gkyKOefx+7pgw\nnlmbN2EVC0Fj6NqiBf+95LK471ebl2fP4j9zZmETCwETpF+bdrxy4cUR97pr4nimrF8X0d+farMx\n/qrruHPiF6wuLorqcBp32VUc37bhGTo9fj+9X32RQIz/hzMdDhbc/tsG31sdekRkrjGmzgEmbekn\niaRdi6l8v8b0TAfYe+2XgG+MAV8+xjUeMEjKxeAYuF+6jEzZ8+GB6OqtbjeUPU7Q0R9Kbgf/ShAb\nGB8m7UYk876quvxh0kR2ezxVQa/S52ND6S5e+PknHj7tzJjveVSLHGr7KHumaL4+dw6nHNGJ49u0\nrTrmtNl4e9ilrCzayfKdhXRqns0xLVs16Hfzws8/8cLPPwLgDX/hzd5SwL1fT+CdYcMB2FpWxvfr\n1kbN7vEEAtw18QvWlhTHXBV91cdjWHLnvQ1++gh9HoEYd9dVuiqehBZnicgQEVkhIqtF5MEYx28X\nkUUiMl9EZohIz3B5JxFxhcvni8hryf4ABwuxtkZafBAenLUADki9EMkeuV/ez5Q9hSm+FVxjwfUR\npmQEZvcTkeeYACZQiDExup3qwzeHyIAfFiyC4pvBvxRwgykHPFD5P3BPAEL92CuKdkaFJV8wWGuu\nf4fVyt/OOLvOqrn9fj5aujjmsW45uQw9ugd9WrWuV8A3xjBpzSpu/GxcVcCvzh8M8lPBJnZWhmZk\nbSzdhcMa3X4KGsPK4qKYLXEIzfGvmf+oPhxWK6cc0RFrjc/msFh0z14VV50tfRGxAi8Dg4ECYI6I\njDfGLK122ihjzGvh84cCzwF7OhTXGGOOTW61D05i74nkjMMYL2Al9KtLPuNbCZWjiZz/7wLXRwRT\nL8Xi6E2w8lMoe7pqqqhJuxzJfAiR2Nv+1crSIhTgo2sCgViB24WpfAdJvajWFqdFYrc5SlwuXpoz\ni0lrVtVZNUOomyOZ7v/2a75evYrKGCt5q9vldpGblsaR2S3wxlkPUJc5mwu4eh923nr67HO57KMP\n2eV24w34cVitdGzWnPtP2v+L/tShKZHunYHAamPMWgARGQ0MI7TvLQDGmN3Vzk8n1vNmExLaP34/\n8kxj7/TPiANQfDXB1KvBVeNLoXIcxgRCA8r1JOkjMKV/AeqRnTK4Cwit8u3bqg3ztm2JWAHrtFoZ\n3qNn1GWVPh/DxrzP9vIKfMG601Sk2e1c2O3oOs9L1OId2/lq9cq4uev3EKBjs+YA5KWnc1G37kxY\ntaLWZHKx7OvCrlYZGUy58RamrFvLhtJdHJ2by8kdOmr3joorke6ddsCmaq8LwmURROQuEVkD/AO4\np9qhziLyi4hME5GYzQ8RGSEi+SKSX1iYeD6UfWECmzGuTzDu78It82Tee2coyZrZ98yUMUkKoT3q\nY/GA612iVwG7wfUJJlhzkVgCUoaCo54rdB17/6qfO+988tLSSLc7sImQarNxdE4udw04IeqyT5cv\npajSlXDAP6NjZ87sdGT96laLGRs3ROxOFc8d/QdF9MX/9dQz+M1x/WiRmppwwHVarQzv2avBdd3D\nZrEw+Kgu3Hp8f049Iv6OaEpBEgdyjTEvAy+LyDXAX4Ebga3AEcaYIhHpB3wmIr1qPBlgjBkJjITQ\n7J1k1SlOPTFl/4DK90GshNpsdmjxLmKPbnnW697BckzpH8EzIzQfnyAm4/dY0m+qX/0qx0Llm6H8\nPPZ+SOb9iL3r3pNShkDZPxtSQzAlQP3mb4sIZNyJKZ4H1Ey/bGXvjJ7qb1Ve9WP7rGZMu+k3vDLn\nZ95dMA+Xz8eynYXcO2kC/zxnSERWzZ8LNsVMkGa3WOjTqjX927TDFwzgDwYZfFQXTmp/RFIHr5ul\npGC3WGJu1QihAdIT2nfgnkEnArC8cAe/++Yr1hQXISKcekRHTmnfkSdmTK31fdpnZjHy4l81aDaR\nUvsikaC/GehQ7XX7cFk8o4FXAUxoBNET/nlu+EmgG9B4czK908E1KlStal8vpuQ3kPcDEqefORGm\n9IFQwMcLe54eyp7HWDsgKXUPSgKY8udDK3n3BFfvNEzxbMj5DLF1CpUFNoH1CAisrGcNvRhjo0Eh\n0t4/lFLCt4i9TxFOYnczAe5JGPNM1bjGptJdvDFvTkS3ybT167hl/CeMu+KaqrKOzZpjt1ijWvoO\nq5U/nngKg9qH/il6/H7WlhRTWFlByxjbJ8ZSVFnJUzOmMWnNaqwW4eJu3fnTSaeS6XRWnXN+l678\nffrUqGsF6N+2Hdce05eLwoOkX65cwb1ff7n3n5ExTN+wnnUlJViIOfSNAF9fexNdc+LnGlJqf0ok\nws0BuopIZwl1Vl8FjK9+gohUa4ZyIbAqXJ4XHghGRI4EugJrk1HxhjKVo8PzzaMOgG9Bw+8bLAn3\ntdfsKnJhKhKbwWOC5VDxDpGtaQPGjal4NfTK8yOm+KYGBPywnWcRLH0IE5X5s3YigrR4GzJuB2sH\nsLSD9FuAeAPDPqo/Abwzf15UemRfMMiynYWsrLbL1VXH9IlazWoVIS89nQHhxUz/W/AL/d54hSvH\njeG0d9/kps8/Zren9hlKHr+fS8eOYvzK5VT4vOz2eBi7ZBFXfTwmYqyheUoqL50fPQBtt1jpkZvH\n0KN7YBFh3a4Sfj9pQtTgVcAYCisruLRHL2wxnkD+eOIpdM3JYe7Wzdz3zVehL72li5M+GK1UPHUG\nfWOMH7gbmAQsA8YaY5aIyOPhmToAd4vIEhGZD/yBUNcOwGnAwnD5OOB2Y0xx0j9FfUQlPttDwmkU\nGii4KzRPPZZAgql3AxvD3UJRNwdv6AvJlP0fMbN2JswHrgmYsmfrfaWIE0vGnVjyvsPScgqWzN+B\nYyDEenawHR0xoL1uV0nMqYtWi4XNZXt7+9plZvHOsEtpl5kV2ibRYuX4Nm0ZdekVWESYvmE9T8+c\nTqXPR7nPizcQYNamTdzz9Ze11n3SmlUUuSojum18wSAbS3cxc9OGiHO3lZfhqPHF4w0GGLNkEVvC\ndR21aEHc1MzeQIAu2S148JTTyElNRYDW6Rm8dsFQ7hgwiLd+mcsNn47js+VLmbJ+HY9O/Z6rPxkb\nc88ApZItoT59Y8xEYGKNskeq/XxvnOs+Bj7elwomm6RcjPHOJ7pvOgiO4xp+Y2t7Yg+uWsEZPWAZ\n+x6t93YLRRDY07XjX92w+kVwg+tDTOaf9qk7C0Cy/owpujz8hekDbKHUE1mRs4QGtevAvK1bohYw\n+QKBqF25BrZrz/SbbmVLeRkpVhs5aXvHIF6fOztqZo03GGBWwSZ2VJTTMj2DQDCItUbQXlq4I2r3\nMAgF6BU7d3LqEZ2qyqZv3IA7ZhplK79s3UrbzCy2lpXFnaLmCwb516yZpNvt/PHEU7i2z94Zy7vc\nLv714w8RvweX38eKnTv5cuVyLu2x7wO7StWm6e2clToU7L1A9gQSG5ACWU8i0vBBNRE7ZP4ZqJ69\n0QaSjqTfldg9LC0g5VxCfeXVOZH020M/Wmrbls9S4+da5uQbD3H74+tBbEciuRMg9Tqwdgmli06/\nF2qsQr6uT1/SHY6IhUSpNhuX9uhF64zM6PuK0C4zKyLgA2wvL486F0IB+cNFCznhrdfo+tLznPjW\na3y0ZFHV8SOzW5Bmi/59OKxWOjVvHlHWNiMzZteMwZCXHtrf+NQjOpJSy0pafzBIqcfD/82YxsRV\nK6rK87dsjrkC1+X3MXFVA7vslKqHJhf0RRxIi/8izf4BqcMh/ddI7udYUi/c53tb0oYj2a+C4ySw\ndg5l08wdj9gST6wlzZ6C1EsIBX47WNogzf+NOMKtxfRbQWqmBU6FtBGQciFYWoKtJ9LsOaTFKLB0\nICZrx+StJ5BU8E6F4FbwL4KK/2AKz8ZU2ySmRWoaX1x1PZd070luahqdm2fz4Cmn88SZ5wBgfEsw\n5a9gKt7BBLZH3N64viRYeAHB7QN4+aTx9MqO7iH0Bfy8Pm8OOyoqANheUcFj077n4/CK14u6dSfV\nbovoq7eKkJ2ayhk1pnxe26dvVGC2hM/tH86VM6x7D1rHSLxWk8vv54Wff6p6nelwxlzFIkB2qs7k\nUfufJlxrBMYEwD0eU/kJIEjacEi5KGIFrzHe0PiDNIuYkmiMwZS/CJVvhwuA9BuRjN/HnLpofItD\ne/QaD6H5JAI4kexXEefJkecGizEV74BnCkhzSL8VS8oZdX6eYOnD4PqEyGRzFnAMwtLivTp+Fwaz\n+1FwfU5oopctdG04mVuw/C0of5E93XEGcPltXPH9cJbvCrXQU2027FZrzMHcthmZzLh5BBBKl/DQ\nd98we3MBgnBqx448dfa5MWf/fLd2DfdP/hpfIEDAGDo3z+bh085g+c6dpNhsnHdUV0RgwBuvxk2z\nsEf15GeBYJCT3x7JjsqKiHNSbTY+uPSKpG5NqZqWRBOuadA/wIwxmF13hnbX2jOuIKngOA1p/mLC\nc86N8UBgB8bSIpTrpvI9CO4Ge18k68+Ivffec/2rMeWvgm8J2I4KPd3YuiCWvd0aJliC2XkxBHcS\nMdnQcQ6WFq/UWpfg9v4QufQizIq0WhDxRGGCu0KzmdyTQl1s9hPANYbowekUyJsKO88GExkgDcKy\n3cfyu5+H0Do9ndv6DeSmzz+O2ccuwJp77oso8wYCodUZdSQ68weDrCraSZrdwcfLlvDGvHzAYBHB\nAP8ZchE/bFzP2CWL427LCDCoXXs+HH5l1esVRTu58dNxVPh8iITGNR44+TRuOvb4WuujVG00y+bB\nypcf2hC9+kCycYFnOvgWgqNvQrcRcYKtA6b0MXB9uvd+vvxQyz7nU8QW6rYQWxek+bOhwF76EBTf\niAGM9Qik2dOIoy+m4r1wfp0as8u9kwlWjMGSfiUNZXwrMZXvgH89+FeFp8yGnwr8q4m5uEus4aRt\nsXbAMvRsvo3J1/+6qqxdZhYFZdFfPLF2tXIkmNXSZrHQI68lv2zdwlu/5OOpEdh/+/WXzPj1CErd\nbr5aswqBqIHqVJuNB04+LaLs6JxcZt48grlbt1Dm9TCgbTtdpKUOGA36B5p3dpypoV7wzko46AME\nSx8F14fRB4wXU/E60uyZvUXGhOb3+1dRNYAbWIMpuRFyvwqvMYgzZbDiJagt6KdcCK5xRHbvWMFx\nAnhmYnb9jlDXTazlSvGmKQpYskIbyMdijRyr+NPJp/KnyZMict+k2Gz8KQmJxz5dvjRmTh2rWPhp\n00aeH3Ihf6msZEvZbjaW7mLk3DlsLttNj9yW3H/SKfSN0WVjtViSsomKUvWlQf9AszQnNEhbI/CL\nI3wsMcGSe8HzVZyjAfAuiizyLYTABqJm7Bg/pvJDsOTGfa9AoBif3x9/39WMP4S+sILbQ19okgqS\nAVl/xxRfTvT02ASYAOI8B5M6B1zjifx9pSAZd0acflG37lhE+OePM9hctpv2WVncf9KpnN+lW/3f\nuwZ/MNaOuwCGgAl9keWmpZGblkafVq2rVuwqdTDSoH+gpVwQypsTFUUEUs6PeYkxHnB/g/GvRmxd\nMI5Tagn4YYECTGAnYs2teo2JNV7gBf/a0Kwg77SYt1pS0oJbvhjJqOFXcHRO5JeD8f4CpQ9AYDMQ\nDH15OE6BtOsQgphgRcx7RrIQ+qcYZM8/SWn+HGJJh6xHMNjB9XH4/lmQ+WfEeVLUXS7oejQXdE1e\nxs09LurWnc9XLI/KCeQPBjmtY6ekv59S+5MG/QNMLNmQPRJT8lv2pmxwItkvIZboKYAmsCO8+KkU\nTCVG0oBE+n99mPLnkWZPhl7aexB7Xn4K2I/H4hxEMOUKcI+NOOryW/m/+YMocbsY8cVnTL3xlqrB\nZhPYhin5deQq5+AOcH8K7gkY+/HE776pzgEtxiLeH8CSBs4hiDWUm0bEgTR7FJP1UCiJmzTf5wVl\ntfEHg4xZvJDRSxYRMIZLu/fkumP6Muzo7ny+Yhluvx+bxYJVLDxx5tk0T9k7fdbj9zNh1Qp+3LSR\n9lnNuKJXb9omMK1TqQNJZ+80EmP84FsMCNh7x91wJVjyW/BMJjJ4xkvnVYNkY2n1c417TWNvV4kV\nLNlI7tdVXzhB92Q2bX6ULFspS3fl8tziAfxS1BqAVJudT668pqq1Hyx7ASreIH6efWdo3UBwK/EX\nggmkXI6l+d8jSo1nZmhqamBTaN1B5u8iZiTtD8YYfvPFZ/xUsLFq1W+KzUavvJaMuewqFm7fxuS1\na0iz27mo29Ec0Wxvd1yZx8OlY0extbyMSp8Ph8WK1WLhraGXcEL7OGsllEoinb1zkBOxgSOBDcU8\n3xPdWk4g4ANI5Mpeaf4cpuJtqBwV6ntPOTM0v7/aE4Yl5RzumbONRTu217wbFiEyP0xgPbVvrOIJ\nTbe09wLfyvC5NT6LpCKZkf3zQddEKH2Qqi8n73RM0Wxo8T+kHgPd9bVg+zZ+KtgUkebB7fezbGch\n0zes54xOnePOo39j3hw27S6t+v14gwEIBvj9pIn8ePOI/bJ3sVIN0eRW5B564gULG1hr679OgbQr\nIu8kdiwZt2FpOQ1Lq5+xNHsasUbv3PSr7j1IiTFo67Da6Fk9T459AJFpJ2LxYsn5CMkZB81fgpRL\nQ3VDwH4s0mIUYt27qbkxBmImlXOH9kHYj/K3bMYfY/OWSp+P2ZsLar12wqqVMROm7fa4WV8a2kUs\nEAxysD1Zq6ZHW/oHu5Rzwf01kd0jNnCeiyX73wSDu8G3DEofARNunZsgOE9A0kc06C2v6d2XL1eu\nYEXRzlBXhdWKVYR/D7kgIpGZpA4LLbQK+ojdfWMF55mhc+1dQxvBpJyNMU8BJnbfvCkPbR4Ti39p\n7PIkyU1Lx2G1Ru2clWK10SojvdZr481sChpDQWkp93/zFb9s24rdamXY0d155LSzSHfs5201lYpB\n+/QPciZYjCm6CoKFoVQK4gRLLpIzJpSgbc95xmC8s0LpmW19EfuRoVk5vl9CM2qcp9cr144/GOS7\ndWuYuXEjLdPTGd6jF20yoxOjmWAxpuyl0EIqs4vQw2MASAVLOpLzCWJtnfjnNX7Mjn6x9zywdsKS\n903C96ovl8/HSW+/TmmNdA7pdjvTb/oN2anxn2pGLVrAkz9MjegasojQtUUOm8t2U+7d2w3msFo5\ntlVrRl92VfI/hGqytE//MCGWFpA7MbRi1786lEbBeXpoTCDMBIsxpQ9X6/+3YKry7NhCawAkBVp8\nULVKty42i4XzjurKeUd1rfU8sbSAjBGYlHNDX0q+eaEvHvuxSOqliCX6i6LW+4kNYzsefDNr1gjS\n74x5TbKk2u18OPxK7pgwnh0V5YgIzZwpvHT+RbUGfIArex3D7M0FfLN2NRYRBKGZ08mgdu0ZvSRy\nzYQ3EGDRju0s21kYlVZaqf1Ng/4hQMQGKWcBZ0UdC620vSHUqq8aJN3TPWEAHxhfaLpnyd1I3sSo\nezSUCZZjSn4HvhnV3tMKqdchadfFnZFU6z39G0OpKqKPIM5B+1LdhHTPzeP7G24ObfoSNHRp0SKh\nQVirxcK/h1zImuIiftm2lVbpGZzU4Qhun/B5zL5+q8XCupJiDfrqgEtoIFdEhojIChFZLSIPxjh+\nu4gsEpH5IjJDRHpWO/ZQ+LoVInJeMiuvCAXIQAF158Y3oQVb/o1Je2tT+lCNgA8QANcoTMVrDbup\nexKxZyfZwP1tw+5ZTyLCkdkt6JqTU+9ZN0e1yOGynr05tWMnrOHN3J0xcv34g0G65cRfBa3U/lJn\n0A/vcfsycD7QE7i6elAPG2WMOcYYcyzwD+C58LU9Ce2p2wsYArwiDWn+qfj8mxI/V4Tap1gmzgTL\nQimYYwZoX3iv34YIxLlnkGRs+nKgXdO7Lyk2e8QcLKfVyqB27enSQjdHVwdeIi39gcBqY8xaY4wX\nGA0Mq36CMRF5ddPZm2RgGDDaGOMxxqwDVofvp5LF3h0SHYyXLLAm1qdfJ7ObWv/5mN0Nm56Ycg6x\nex0t4Dyn7moZw/xtW5myfi273A3I+ZNkOWlpfHrlNZzRqTMOq5Usp5Pr+xzLaxcOq/tipfaDRPr0\n2wHVm5MFQFTnqojcRWhTdAd7O5/bAbNqXNsuxrUjgBEARxxxRCL1VmFi74lxHAveucRvxYcGc6X5\nc8lLYWBpE0qZEIyzSbu1S4MWJImtCyZjBJTvWekrgB0y7kJstf/b2FRayvWffURRZSUWEbyBAL8d\neCJ3Dtj/YwG16dQ8m7eGXtqodVBqj6QtzjLGvGyMOQp4APhrPa8daYzpb4zpn5enA1v1JdkjwX5M\nnKNWSL0cyf0GcQxI3nuKBTIfI/QdX5MTyXq4wfe2ZPwWyfkI0u+A9DuQ3E+wZNxW6zXGGG4e/wkF\nu3dT4fNR5vXiCQR4ec4sftiwvsF1Uepwk0hLfzNQPXlI+3BZPKOBVxt4rWoAESfG2ioynX3VwRTE\n0Q+xtkz6+1pSh2CsrTFl/wJ/aC9a7H2QzPsQe59638+YIKbizdB4gCkFey8k8y+IrUud1y4v2snW\n8jKCNbqUXH4/7y34hVObSDbMX7Zu4YWff2JVcRFH5+Ry76ATY+bzV01XIkF/DtBVRDoTCthXAddU\nP0FEuhpjVoVfXgjs+Xk8MEpEngPaAl2B2cmouKrBfiy4vycqfYEJgG3/5XcXx7FIzvtJuZcpewoq\nq22d6FuAKb4RcsYi9tpTJpd5PBGbnld3MPTtHwgzNm5gxJefVW34srW8jFmbN/H20Es16ZuqUmf3\njjHGD9wNTAKWAWONMZnyomUAAAx3SURBVEtE5HERGRo+7W4RWSIi8wn1698YvnYJMBZYCnwN3GVM\nvK2Q1L6Q1OFgyQCqT45ygmMgYt/3jUT2NxMsg8rRROfccWFKbsF4ptd6/TEtWxEIRg8cp9hsDEnC\nRiqHgsenfx+1w5fb7+fv06c0Uo3UwSihxVnGmInAxBplj1T7+d5arn0SeLKhFVT/396dB8lRlnEc\n//7m2J3Z3RwbEohcIUGOECAGY5SARApCIipBQAwSDRhAscAqKQuwKBH4w7NAqZJCU6WloIJKKRUE\ntdBwKJKSaBJz4ObiSohJCERz7Gavxz+6k8zMzu7O7M7Osf18qqa2p699+0nn2Z63e563MIqNgCN+\nExQlO/Bs8A3c9JU9RpgqFWtfge35OnSsC0b8arweNSwceDXJri2gZPCt3lzdO7DdN2MN1xAb8aW8\nm6eTSe6adT5fe24p7V1ddJuRSiQ4dsRIrjq9+K6mcjIzntzQwi/Xrqa9q4vLJk/hslNP63fg9tx9\nbHw7f82ill1vlaqpbhjwb+QOI4qPR6PvK/l+zSwodmYHghvGnRuCbpeDV+XdO2HPd4ORukZ+eWC/\nJH40WB/fIbBW2PcjrOHqXu9PfGLKGZw8dhwPr1rBzv37uGDiiVxx2uk0JJMDa1OZ3PqnP/DUhg2H\nRuZas2M7T7T8m4c+fkWvXVa5JDG6PsXuAz2fpsoc6MU5T/quT9bxb+ydzwU3VokBCp/1z70ib4X9\nD2FNX0CxhqJ/j2KjsPRl0Po4Pbt4Dq6UhPaXIP2RXvcz9ajxTL0o/7CT1ahl11s8uWF9VrdMa2cn\nK7dv4y+vvcqsEyYWvK/rzprOAy8tyyr6lk4kuOG9/dbgchHi9fRdr8zag7o+3duCIRFtL9ge6FxF\nnkF+QXHofnPAv08j74TGa4E+rsyLGDy+Fizb8nreL7Ht7+jgr2+8VtS+Pj99Bp8+cxqpRIKGZJJ0\nIsE1U8/iumme9N1hfqXvenfgOXp5DpS8Sd86IVZ4GeVDm3WswfbcCx1rg26eEbcFg8fnfppQGuo+\nUPT+q1lzKk0iFuNATlG2unicsQ3FfWKKSdx+7nl88f1ns33fXsY3NpGu8q4tV35+pe961/1OMCBL\nD0b2U0IQjNT1CRRrKupXWMcabNfV0P5CUI+/cx3suRdSHwuSvJpADRA7Go15aECVO6vZ7EnvJpbn\nW9JxiUtPyS1xVZiGZJKJo5s94bu8/Erf9a5uBnmLn6kBGq6FtqeCcXLVCA2fQU03F/0rbM99QO5z\n9K3BYPDj/oY61kAsDYkzqn6c2aWvbOb7f1/Gm3v/x1njj+aWs8/pt6haOpnk4Y9fwfVPPM7+jnYk\nEZe4f+5HOaqpuD+gzhXCR85yfer+753QtiTo0wcgDcnJaMzPggFPrANIDDghd2+fEY64lasejVuK\n4rVRluOXa1Zzz/NLD91EjUmkEgl+e+XVnHRE/9U0u81YvWM7nd1dnHnk+KIe13QOfOQsVyIaeTfU\nn4PtfwSsDVLzUMPlYcJvhbY/Bc/RJ6dBclrxyT/+LujMl/QFsVElOYah1tndzTdeeC7rqZluM1o7\nOrhv2V95sICKmjGJqUcVfz/EuWJ50nd9kgSpOSiVPf6NdazH3r4a6AzH7k1C8ixoXoxUWF+ymUGs\nOc+SJDTML2pM30ravncvHXlGxzLgn9u2lb9BzvXBb+S6opkZtvvm4Nl920eQ+Fuh/R/Y/p8XvqP2\nF4OB23vogsa+q2pWk9GpVI9CbweN9355V2U86bvidb0BXfmuYNug9bGCd2NtTwZ/LHIpjdpfHHj7\nyqyxro55p0wmFc/+4JxOJLjpfcPrEVNX+7x7xw1AHzf/u3YVsZ8EvT7zr9o6Ne/+0AUYsKTlZeKK\nEY/FuHXmucw+sf+y0M6VU239z3LVIX48xMeGA7LnsP9iB55H9ef1uxulL8VaH6fHI5vWDXUfLE1b\ny6Q+keBbF87hq+edzzutrYxvavIncFxV8u4dVzRJMOLOXpZ2BgOhFLKfumnQuBCoD15KAyk0+nso\n1lii1pZXU10dx40a5QnfVS2/0ncDoviRmBoynt/P0LWj4P3ERtyCpS8PSj4oBanZKO8TPc65UvCk\n7wYmcSJBf3yPBVBfXNeMEhMg8ZmSNMs517eCunckzZXUImmjpNvzLL9F0jpJ/5L0Z0kTMpZ1SVoZ\nvpaUsvGucqR6aLoNyKzVngSNQI3XV6pZzrl+9Hulr6DC1QPAbGAL8JKkJWa2LmO1FcB0M9sv6Ubg\n28Anw2WtZvaeErfbVYFY43wscXzQh9+1HerPRY2LhmQQdudcaRTSvTMD2GhmmwEkPQrMIxj3FgAz\nyxyEcxmwoJSNdNVL9TNR/cxKN8M5V6BCuneOAd7IeL8lnNebRcDvM96nJC2XtEzSpfk2kHRDuM7y\nnTt3FtAk55xzA1HSG7mSFgDTgVkZsyeY2VZJk4Clklab2abM7cxsMbAYgiqbpWyTc865wwpJ+luB\n4zLeHxvOyyLpQuAOYJaZHRryyMy2hj83S3oWmAZsyt3eVQezNmh7Grp3BAXUku+p+jr2zrnCFZL0\nXwJOkjSRINnPBz6VuYKkacAPgblmtiNjfjOw38wOSBoLnENwk9dVoezKme1AAureB80PFlw50zlX\n3frt0zezTuAm4I/Ay8CvzGytpHskXRKu9h2gCfh1zqOZk4HlklYBzwDfzHnqx1WJoHLmTRmVMzuA\nVmj/e1BL3zk3LPjIWQ4A63wde+ujQFvPhYlTiI19ouxtcs4VrtCRs7z2jgt1kf8btvQyOLpzrhZ5\n0neB+Am9jGKVgnT/w/0552qDJ30HBJUzNfp+UCOQCmc2QPJU1Liwom1zzpWOF1xzh6huKox7Blp/\nh3X/B9VNh7rzkPzawLnhwpO+y6LYaGhc0FvvvnOuxvklnHPORYgnfeecixBP+s45FyGe9J1zLkI8\n6TvnXIR40nfOuQjxpO+ccxHiSd855yLEk75zzkWIJ33nnIsQT/rOORchnvSdcy5Cqm7kLEk7gdeG\naPdjgbeGaN+1xmORzeNxmMciW63EY4KZjetvpapL+kNJ0vJChhOLAo9FNo/HYR6LbMMtHt6945xz\nEeJJ3znnIiRqSX9xpRtQRTwW2Tweh3kssg2reESqT98556Iualf6zjkXaZ70nXMuQoZF0pc0V1KL\npI2Sbu9lnSslrZO0VtIvMuZ3SVoZvpaUr9VDp794SPpuxjGvl7Q7Y9lCSRvC18Lytrz0BhmLKJ4b\nx0t6RtIKSf+SdHHGsq+E27VImlPelg+NgcZD0gmSWjPOjx+Uv/UDZGY1/QLiwCZgElAHrAJOy1nn\nJGAF0By+PzJj2d5KH0O545Gz/s3Aj8PpMcDm8GdzON1c6WOqRCyiem4Q3LS8MZw+DXg1Y3oVUA9M\nDPcTr/QxVTAeJwBrKn0MA3kNhyv9GcBGM9tsZu3Ao8C8nHWuBx4ws3cAzGxHmdtYToXEI9NVwCPh\n9BzgaTN7O4zV08DcIW3t0BpMLIajQuJhwMhwehTwZjg9D3jUzA6Y2SvAxnB/tWww8ahZwyHpHwO8\nkfF+Szgv08nAyZJekLRMUmYiS0laHs6/dKgbWwaFxAMASRMIrtqWFrttjRhMLCCa58ZdwAJJW4Cn\nCD79FLptrRlMPAAmht0+z0n64JC2tIQSlW5AmSQIung+BBwLPC/pDDPbTVCvYqukScBSSavNbFMF\n21pO84HHzKyr0g2pAvliEcVz4yrgJ2Z2r6SzgYclnV7pRlVQb/HYBhxvZrskvRd4XNIUM/tfRVtb\ngOFwpb8VOC7j/bHhvExbgCVm1hF+NF1P8EcAM9sa/twMPAtMG+oGD7FC4nHQfLK7M4rZthYMJhZR\nPTcWAb8CMLMXgRRBwbHhdm7AIOIRdnPtCuf/g+DewMlD3uJSqPRNhcG+CK7iNxN8ND94M2ZKzjpz\ngZ+G02MJPtIdQXCzsj5j/gb6uNFXC69C4hGudyrwKuEX9MJ5Y4BXwrg0h9NjKn1MFYpFJM8N4PfA\nNeH0ZII+bAFTyL6Ru5nav5E7mHiMO3j8BDeCt9bK/5WKN6BE/3gXE1y9bwLuCOfdA1wSTgu4D1gH\nrAbmh/Nnhu9XhT8XVfpYyhGP8P1dwDfzbPtZgpt0G4FrK30slYpFVM8NgidUXgiPeyVwUca2d4Tb\ntQAfrvSxVDIewOXA2nDeP4GPVfpYCn15GQbnnIuQ4dCn75xzrkCe9J1zLkI86TvnXIR40nfOuQjx\npO+ccxHiSd855yLEk75zzkXI/wEDEV7zm2CQggAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Ov1PVnJQUk9L",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 373
        },
        "outputId": "8b872c16-a8e7-4d5d-df20-1f289f779de3"
      },
      "source": [
        "# GMM模型\n",
        "K = 3\n",
        "gmm = GMM(K)\n",
        "gmm.fit(data)\n",
        "y_pre = gmm.prediction\n",
        "print(\"GMM预测结果：\\n\",y_pre)\n",
        "print(\"GMM正确率为：\\n\",accuracy_score(label,y_pre))\n",
        "plt.scatter(data[:, 0], data[:, 1], c=y_pre)\n",
        "plt.title(\"GMM\")\n",
        "plt.show()"
      ],
      "execution_count": 125,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "GMM预测结果：\n",
            " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
            "GMM正确率为：\n",
            " 0.6666666666666666\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n+83iAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    }
  ]
}